#pragma once

class SCSlotContainer;
class SCQuickSlotContainer;
class SlotManager;
class Player;
class SCQuickSlot;

class QuickManager
{
public:
	QuickManager(void);
	~QuickManager(void);

	VOID					Init( SlotManager * pMGR );
	VOID					Release();

	SCQuickSlotContainer *	GetQuickSlotContainer();
	BOOL					ValidPos( SLOTIDX atIndex, POSTYPE atPos, BOOL bEmptyCheck = TRUE );
	BOOL					ValidState();
	BOOL					IsEmpty( POSTYPE pos );

		
	VOID					SerializeQuickStream( POSTYPE pos, QUICKSTREAM * IN pStream, eSERIALIZE eType = SERIALIZE_LOAD );

	RC::eQUICK_RESULT		LinkSkill( SLOTCODE code, POSTYPE toPos );
	RC::eQUICK_RESULT		LinkItem( POSTYPE orgPos, POSTYPE toPos );
	RC::eQUICK_RESULT		Unlink( POSTYPE atPos );
	RC::eQUICK_RESULT		Move( POSTYPE fromPos, POSTYPE toPos );


	VOID					UpdateOriginalItems();
private:
	VOID					_IteratingOriginalItem( SCSlotContainer * pContainer, SCQuickSlot & rQuickSlot, SLOTCODE ItemCode );

	Player *				m_pPlayer;
	SlotManager *			m_pSlotMGR;
	SCSlotContainer **		m_ppSlotContainer;

};
